package com.skivingcloud.admin.sys.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.skivingcloud.admin.security.SecurityUser;
import com.skivingcloud.admin.sys.entity.SysDictionary;
import com.skivingcloud.common.utils.PageParameter;

import java.io.Serializable;
import java.util.List;

/**
 *  服务层。
 *
 * @author skivingcloud
 * @since 2023-08-28
 */
public interface SysDictionaryService extends IService<SysDictionary> {
    
    /**
     * 根据字典编号取字典数据
     * @param classCode 字典编码
     * @return 字典项
     */
    List<SysDictionary> queryByClassCode(String classCode);
    
    /**
     * 新增数据字典
     * @param sysDictionary 数据字典
     * @param currentUser 操作人
     */
    void addDic(SysDictionary sysDictionary, SecurityUser currentUser);
    
    /**
     * 修改数据字典
     * @param sysDictionary 数据字典
     * @param currentUser 操作人
     */
    void updateDic(SysDictionary sysDictionary, SecurityUser currentUser);
    /**
     * 删除数据字典
     * @param id 字典id
     */
    void deleteDic(String id);
    
    /**
     * 分页查询数据字典
     *
     * @param parameter 查询参数
     * @return 分页查询结果
     */
    Page<SysDictionary> queryByPage(PageParameter<SysDictionary> parameter);
    
    /**
     * 批量删除
     * @param ids 主键
     */
    void deleteBatch(String[] ids);
    
    /**
     * 根据主键获取详细信息。含有上级名称
     * @param id 主键
     * @return 字典信息
     */
    SysDictionary getInfoByIdHasParent(Serializable id);
}
